FastAPI তে Form Data এবং File Upload হ্যান্ডলিং অত্যন্ত সহজ এবং কার্যকর। FastAPI Form, File, এবং UploadFile ব্যবহার করে HTML Form থেকে ডাটা গ্রহণ করতে এবং ফাইল আপলোড পরিচালনা করতে পারে। এই ডাটা ডেভেলপারের চাহিদা অনুযায়ী প্রক্রিয়া করা যায় এবং বিভিন্ন ধরনের ফর্ম্যাটে রেসপন্স প্রদান করা যায়।
Form Data হ্যান্ডলিং
Form Data সাধারণত HTML form ব্যবহার করে সার্ভারে পাঠানো হয়। FastAPI-তে Form Data হ্যান্ডলিংয়ের জন্য Form ডেকোরেটর ব্যবহৃত হয়।
উদাহরণ: Form Data গ্রহণ
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/submit-form/")
def submit_form(name: str = Form(...), age: int = Form(...)):
return {"name": name, "age": age}
এখানে:
nameএবংageহল ফর্ম প্যারামিটার, এবংForm(...)ডেকোরেটর দিয়ে আমরা ফর্ম ডাটা গ্রহণ করছি।
রিকোয়েস্ট উদাহরণ (HTML Form):
<form action="/submit-form/" method="post">
<input type="text" name="name" value="John Doe">
<input type="number" name="age" value="30">
<input type="submit">
</form>
রেসপন্স:
{
"name": "John Doe",
"age": 30
}
এখানে, ফর্ম ডাটা সফলভাবে সার্ভারে পাঠানো হয়েছে এবং সার্ভার সেই ডাটা ফিরিয়ে দিয়েছে।
File Upload হ্যান্ডলিং
FastAPI তে File Upload পরিচালনা করতে File এবং UploadFile ব্যবহার করা হয়। এই দুটি ক্লাসের সাহায্যে আপনি ফাইল আপলোড করতে পারেন এবং ফাইলের মেটাডেটা (ফাইল নাম, কনটেন্ট টাইপ) সংগ্রহ করতে পারেন।
উদাহরণ: ফাইল আপলোড
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/uploadfile/")
async def upload_file(file: UploadFile = File(...)):
return {"filename": file.filename, "content_type": file.content_type}
এখানে:
UploadFile: ফাইল আপলোড করার জন্য FastAPI ক্লাস।File(...): ফাইল প্যারামিটার হিসেবে গ্রহণ করার জন্য ব্যবহৃত হয়।
রিকোয়েস্ট উদাহরণ (HTML Form):
<form action="/uploadfile/" enctype="multipart/form-data" method="post">
<input type="file" name="file">
<input type="submit">
</form>
রেসপন্স:
{
"filename": "example.txt",
"content_type": "text/plain"
}
এখানে, আপলোড করা ফাইলের নাম এবং কনটেন্ট টাইপ রেসপন্স হিসেবে প্রদান করা হয়েছে।
File Upload: File Content Access
FastAPI তে UploadFile ব্যবহার করে ফাইলের কনটেন্টও অ্যাক্সেস করা সম্ভব। আপনি ফাইলের কনটেন্ট পড়তে বা সেভ করতে পারেন। UploadFile একটি ফাইল অবজেক্ট হিসেবে কাজ করে, যা file.read() ব্যবহার করে ফাইলের কনটেন্ট পড়তে দেয়।
উদাহরণ: ফাইল কনটেন্ট পড়া
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/uploadfile/")
async def upload_file(file: UploadFile = File(...)):
content = await file.read()
return {"filename": file.filename, "file_size": len(content)}
এখানে, ফাইলের কনটেন্ট file.read() দিয়ে পড়া হয়েছে এবং ফাইলের সাইজ রেসপন্স হিসেবে প্রদর্শিত হচ্ছে।
রেসপন্স (ফাইল সাইজ):
{
"filename": "example.txt",
"file_size": 1024
}
Multiple Files Upload
FastAPI তে একাধিক ফাইলও একসাথে আপলোড করা যায়। এটি করতে List[UploadFile] ব্যবহার করা হয়।
উদাহরণ: Multiple Files Upload
from fastapi import FastAPI, File, UploadFile
from typing import List
app = FastAPI()
@app.post("/uploadfiles/")
async def upload_files(files: List[UploadFile] = File(...)):
file_details = [{"filename": file.filename, "content_type": file.content_type} for file in files]
return {"uploaded_files": file_details}
এখানে, List[UploadFile] ব্যবহার করে একাধিক ফাইল গ্রহণ করা হচ্ছে।
রিকোয়েস্ট উদাহরণ:
<form action="/uploadfiles/" enctype="multipart/form-data" method="post">
<input type="file" name="files" multiple>
<input type="submit">
</form>
রেসপন্স:
{
"uploaded_files": [
{"filename": "file1.txt", "content_type": "text/plain"},
{"filename": "file2.jpg", "content_type": "image/jpeg"}
]
}
এখানে, দুইটি ফাইল একসাথে আপলোড করা হয়েছে এবং তাদের তথ্য রেসপন্সে দেখানো হয়েছে।
Form Data এবং File Upload একসাথে
FastAPI তে আপনি Form Data এবং File Upload একসাথে গ্রহণ করতে পারেন। আপনি Form এবং File ডেকোরেটর একসাথে ব্যবহার করে ফর্ম ডাটা এবং ফাইল একসাথে পাঠাতে পারবেন।
উদাহরণ: Form Data এবং File Upload একসাথে
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/upload/")
async def upload_file(name: str = Form(...), description: str = Form(...), file: UploadFile = File(...)):
file_content = await file.read()
return {"name": name, "description": description, "filename": file.filename, "file_size": len(file_content)}
এখানে:
nameএবংdescriptionফর্ম ডাটা হিসেবে গ্রহন করা হচ্ছে।fileফাইল হিসেবে আপলোড করা হচ্ছে।
রিকোয়েস্ট উদাহরণ (HTML Form):
<form action="/upload/" enctype="multipart/form-data" method="post">
<input type="text" name="name" value="Laptop">
<input type="text" name="description" value="A high-performance laptop">
<input type="file" name="file">
<input type="submit">
</form>
রেসপন্স:
{
"name": "Laptop",
"description": "A high-performance laptop",
"filename": "example.txt",
"file_size": 1024
}
FastAPI তে Form Data এবং File Upload হ্যান্ডলিং খুবই সহজ এবং শক্তিশালী। Form, File, এবং UploadFile ব্যবহার করে আপনি HTML ফর্ম ডাটা এবং ফাইল আপলোড গ্রহণ করতে পারেন, এবং ফাইলের কনটেন্ট প্রসেস করতে পারেন। একাধিক ফাইল, কনটেন্ট টাইপ যাচাই, এবং ফাইলের সাইজ বের করার মতো কাজগুলি সহজেই করা যায়। FastAPI এই সমস্ত কাজের জন্য একক ও কার্যকর সমাধান প্রদান করে, যা দ্রুত ডেভেলপমেন্টের জন্য খুবই উপযোগী।
Read more